{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1fceccfc",
   "metadata": {},
   "source": [
    "# 三、Pytorch的层次结构"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65c4cf58",
   "metadata": {},
   "source": [
    "本章我们介绍Pytorch中5个不同的层次结构：即硬件层，内核层，低阶API，中阶API，高阶API【torchkeras】。并以线性回归和DNN二分类模型为例，直观对比展示在不同层级实现模型的特点。\n",
    "\n",
    "Pytorch的层次结构从低到高可以分成如下五层。\n",
    "\n",
    "最底层为硬件层，Pytorch支持CPU、GPU加入计算资源池。\n",
    "\n",
    "第二层为C++实现的内核。\n",
    "\n",
    "第三层为Python实现的操作符，提供了封装C++内核的低级API指令，主要包括各种张量操作算子、自动微分、变量管理.\n",
    "如torch.tensor,torch.cat,torch.autograd.grad,nn.Module.\n",
    "如果把模型比作一个房子，那么第三层API就是【模型之砖】。\n",
    "\n",
    "第四层为Python实现的模型组件，对低级API进行了函数封装，主要包括各种模型层，损失函数，优化器，数据管道等等。\n",
    "如torch.nn.Linear,torch.nn.BCE,torch.optim.Adam,torch.utils.data.DataLoader.\n",
    "如果把模型比作一个房子，那么第四层API就是【模型之墙】。\n",
    "\n",
    "第五层为Python实现的模型接口。Pytorch没有官方的高阶API。为了便于训练模型，作者仿照keras中的模型接口，使用了不到300行代码，封装了pytorch的高阶模型接口torchkeras.KerasModel。此外，有一个非常流行的非官方Pytorch的高阶API库，叫做pytorch_lightning,作者通过引用和借鉴它的一些能力，设计了一个和torchkeras.KerasModel功能类似的高阶模型接口torchkeras.LightModel，功能更加强大。如果把模型比作一个房子，那么第五层API就是模型本身，即【模型之屋】。\n",
    "\n",
    "\n",
    "![](https://tva1.sinaimg.cn/large/e6c9d24egy1h5hw3zgu7ij212w0lwjt3.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "675229e2",
   "metadata": {},
   "source": [
    "**如果本书对你有所帮助，想鼓励一下作者，记得给本项目加一颗星星star⭐️，并分享给你的朋友们喔😊!** \n",
    "\n",
    "如果对本书内容理解上有需要进一步和作者交流的地方，欢迎在公众号\"算法美食屋\"下留言。作者时间和精力有限，会酌情予以回复。\n",
    "\n",
    "也可以在公众号后台回复关键字：**加群**，加入读者交流群和大家讨论。\n",
    "\n",
    "\n",
    "![算法美食屋logo.png](https://tva1.sinaimg.cn/large/e6c9d24egy1h41m2zugguj20k00b9q46.jpg)"
   ]
  }
 ],
 "metadata": {
  "jupytext": {
   "cell_metadata_filter": "-all",
   "main_language": "python"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
